using System.Collections.Generic;

namespace OffsetPath
{
    public class ClassV : List<ClassO_List_LineArco>
    {
        public void a()
        {
            ClassV classV = new ClassV();
            while (base.Count > 0)
            {
                ClassO_List_LineArco classO = base[base.Count - 1];
                base.RemoveAt(base.Count - 1);
                if (!classO.MethodA(true))
                {
                    for (int i = 0; i < base.Count; i++)
                    {
                        if (!base[i].MethodA(true) && base[i].MethodA(classO))
                        {
                            classO = null;
                            i += base.Count;
                        }
                    }
                }
                if (classO != null)
                {
                    classV.Add(classO);
                }
            }
            this.a((List<ClassO_List_LineArco>) classV);
        }

        public void a(List<ClassO_List_LineArco> A_0)
        {
            for (int i = 0; i < A_0.Count; i++)
            {
                base.Add(A_0[i]);
            }
            A_0.Clear();
        }

        public ClassO_List_LineArco a(int A_0)
        {
            ClassO_List_LineArco classO = base[A_0];
            base.RemoveAt(A_0);
            return classO;
        }

        public void a(ClassV A_0)
        {
            ClassV classV = new ClassV();
            while (A_0.Count > 0)
            {
                ClassO_List_LineArco classO = A_0.a((int) (A_0.Count - 1));
                for (int i = 0; i < base.Count; i++)
                {
                    if (!base[i].MethodA(true) && base[i].MethodA(classO))
                    {
                        classO = null;
                        i += base.Count;
                    }
                }
                if (classO != null)
                {
                    classV.Add(classO);
                }
            }
            while (classV.Count > 0)
            {
                A_0.Add(classV.a((int) (classV.Count - 1)));
            }
        }

        public void a(ClassV A_0, bool A_1)
        {
            ClassV classV = new ClassV();
            while (A_0.Count > 0)
            {
                ClassO_List_LineArco item = A_0.a((int) (A_0.Count - 1));
                if (item.MethodA(A_1))
                {
                    base.Add(item);
                }
                else
                {
                    classV.Add(item);
                }
            }
            while (classV.Count > 0)
            {
                A_0.Add(classV.a((int) (classV.Count - 1)));
            }
        }

        ~ClassV()
        {
        }
    }
}

